/**
 * @file         bsc_uart_nvs.h
 * @brief        串口框架_属性存储器
 * @note    
 * @author       Jpz(jinpuzhao@hopechart.com, 靳普诏)
 * @data         2022-7-14
 * @version      1.0
 *
 * @par          修改日志
 * <table>
 * <tr><th>Date        <th>Version               <th>Author          <th>Description
 * <tr><td>2022-7-14   <td>1.0                   <td>Jpz             <td>创建初始版本
 * @copyright    杭州鸿泉物联网技术股份有限公司
 */

#ifndef _BSC_UART_NVS_H_
#define _BSC_UART_NVS_H_

#include "ofc/ofc_types.h"

#ifdef __cplusplus
extern "C" {
#endif


// NVS属性ID
typedef enum TBsUartNvsAttrIdTag TBsUartNvsAttrId;
enum TBsUartNvsAttrIdTag
{   
    kBsUartNvsAttrIdUart0Baud       = 10,   ///< 串口0波特率. 用户实现，示例值：(Int32)115200
    kBsUartNvsAttrIdUart0Parity     = 11,   ///< 串口0校验模式. 用户实现，参考值 @ref TBsUartParity (@file bsc_uart_device.h)

    kBsUartNvsAttrIdUart1Baud       = 20,   ///< 串口1波特率. 用户实现，示例值：(Int32)115200
    kBsUartNvsAttrIdUart1Parity     = 21,   ///< 串口1校验模式. 用户实现，参考值 @ref TBsUartParity (@file bsc_uart_device.h)

    kBsUartNvsAttrIdUart2Baud       = 30,   ///< 串口2波特率. 用户实现，示例值：(Int32)115200
    kBsUartNvsAttrIdUart2Parity     = 31,   ///< 串口2校验模式. 用户实现，参考值 @ref TBsUartParity (@file bsc_uart_device.h)

    kBsUartNvsAttrIdUart3Baud       = 40,   ///< 串口3波特率. 用户实现，示例值：(Int32)115200
    kBsUartNvsAttrIdUart3Parity     = 41,   ///< 串口3校验模式. 用户实现，参考值 @ref TBsUartParity (@file bsc_uart_device.h)

    kBsUartNvsAttrIdUart4Baud       = 50,   ///< 串口4波特率. 用户实现，示例值：(Int32)115200
    kBsUartNvsAttrIdUart4Parity     = 51,   ///< 串口4校验模式. 用户实现，参考值 @ref TBsUartParity (@file bsc_uart_device.h)
};

typedef struct TBsUartNvsValueTag TBsUartNvsValue;
struct TBsUartNvsValueTag
{
    Int32 value;
};


/**
 * 获取属性值
 * @param id:       属性id (@ref TBsUartNvsAttrId)
 * @param ret_value: 读取属性的返回码，若为NULL则忽略
 * @return >= 0     成功
 *         <  0     失败，返回码参见(@ref THccAppUartDispErrorCode)[@file bsc_uart_error_code.h]
 */
Int32 BsUartNvsGetAttribute(Int32 attr_id, TBsUartNvsValue *ret_value);

/**
 * 设置属性值
 * @param id:       属性id (@ref TBsUartNvsAttrId)
 * @param value:    设置值
 * @return >= 0     成功
 *         <  0     失败，返回码参见(@ref THccAppUartDispErrorCode)[@file bsc_uart_error_code.h]
 */
Int32 BsUartNvsSetAttribute(Int32 attr_id, TBsUartNvsValue *value);


#ifdef __cplusplus
} // extern "C" {
#endif


#endif // #ifndef _BSC_UART_NVS_H_


